#ifndef __LITE_CMD_H
#define __LITE_CMD_H


///////////////////////CMD有限状态机
typedef enum 
{
  CMD_STATE_INIT,       //  CMD初始
  CMD_STATE_CAPTURE,    //  CMD捕获状态
  CMD_STATE_PARSE,      //  CMD解析状态
  CMD_STATE_MATCH,      //  CMD匹配状态
  CMD_STATE_EXECUTE     //  CMD执行状态
}CMD_STATE_E;

//  LiteCmd命令盒子结构体
typedef struct
{
  u8 *ucpCmd ;             //  命令名称
  u8 (*fpCmdfunc)(u8 *) ; //  命令接口  
}CMDTBL_T;

//  LiteCmd句柄结构体
typedef struct
{
  CMD_STATE_E   FsmState;     //Miaozi:有限状态机标记
  UART_T *tpUart;     //  串口句柄
 
  u8  ucCmdAcq;       //  命令请求模式？ 0：不是 1：是

  BUFFER_T  *tpTxBuf; //  发送缓存区
  BUFFER_T  *tpRxBuf; //  接收缓存区
  BUFFER_T  *tpCmdBuf;//  命令缓存区

  u16 usRxBufLen;     //  当前接收到的长度
  
  u16 usCmdPop;       //  队头索引，命令缓存区
  
  CMDTBL_T tCmd;      //  命令句柄
}LiteCmd_T;

extern LiteCmd_T g_tLiteCmd;              //  LiteCmd操作句柄

void LITE_CMD_SetState(CMD_STATE_E Index);          //  设置发送状态机阶段
void LITE_CMD_Init(void);                 //  LITE_CMD中间件初始化
void LITE_CMD( void *pvParameters);       //  任务函数指针
u8 LITE_CMD_Capture(void);                //  命令捕获
u8 LITE_CMD_Parese(void);                 //  命令解析
u8 LITE_CMD_Match(const CMDTBL_T *tpCmd);      //  命令匹配
u8 LITE_CMD_RunCommand(void);             //  命令执行
#endif
/***************************** LiteBsp by Miaozi (END OF FILE) *********************************/
